﻿using System;

namespace ClassLibrary1
{
    public interface IClass2
    {
        void Wroom();
    }

    public class Class3
    {
        public virtual void Woosh()
        {

        }

        public void Smotsh()
        {
            Console.WriteLine("Smotsh");
        }
    }

    public class Class2 : Class3, IClass2
    {
        public event EventHandler BobEvent;

        public Class2()
        {
            Wroom();
            Wahoo();
        }

        private static void Wahoo()
        {
            throw new NotImplementedException();
        }

        void HandleBobEvent(object sender, EventArgs e)
        {
            throw new NotImplementedException();
        }

        public override void Woosh()
        {
            BobEvent += HandleBobEvent;
        }

        public void Wroom()
        {
            throw new NotImplementedException();
        }

        public void FunctionalParent(Class3 parameter)
        {
            Action action = () =>
            {
                parameter.Smotsh();
                HandleBobEvent(parameter, null);
            };
            action.BeginInvoke(null, null);
        }
    }
}
